﻿using System.Collections.Generic;
using Elasticsearch.Synchronize.Domain.Aggregates.SynchronizeAggregate;
using Elasticsearch.Synchronize.Domain.SeedWork;

namespace Elasticsearch.Synchronize.Domain.Interface
{
    public interface ISynchronizeItemRepository : IRepository<SynchronizeItem>
    {
        List<SynchronizeItem> GetValidItems();

        List<SynchronizeItem> GetIdleAndEnabledItems();

        List<SynchronizeItem> GetItemsByRuleId(string ruleId);

        List<SynchronizeItem> GetItemsByRuleIdAndFilter(string ruleId, string jsonFilter);

        void Add(SynchronizeItem item);

        void Delete(string identity);

        void Update(string identity, SynchronizeItem item);

        void BatchEnable(string ruleId);

        void BatchDisable(string ruleId);
    }
}